About Me

My photo
JHC Technology is a Service Disabled, Veteran-Owned, Small Business based in the Washington, DC Metro area. Our primary focus is to offer customized solutions and IT consulting to our Commercial and Government clients. Our experts have a broad experience delivering and managing Microsoft Enterprise applications and Cloud and Virtualization Solutions, as well as mobilizing Enterprise data.

Friday, May 31, 2013

How to Add and Remove Entries From Web.Config Using SPWebConfigModification

Often times during SharePoint Development, we need to store configuration related entries in the web.config file. We can use Property Bag tool from CodePlex, but in case you would like to use a Feature, I have outlined below the steps to create a Feature that will add entries to the web.config for the SharePoint Web Application:

1.       Open Visual Studio 2010
2.       Select New Project  Empty SharePoint Project
3.       Provide a local site and Select "Deploy as a farm solution" option.


4.       Right Click on the "Features" and Select "Add Feature"


5.       On the following screen, provide the Unique Title Name and Description. (Refer to screen below).

(Mostly, developers don't put anything in Description but this information really comes in handy when you are trying to figure out what a specific Feature is supposed to do in terms of functionality)
6.       Right Click on Feature1.Feature and Click on "Add Event Receiver"
7.       Uncomment the "Feature Activated" part of the code


8.       Add the following Code in FeatureActivated Method

This code is added to the following entries in web.config
  1. Connection Strings
  2. Key Value pair in AppSettings section
For each child node entry provide a specific owner name (like "Smartrider" in my case).We will need this as a reference later on in case you want to remove the entries (we are going to do this during Deactivation)
string value = @"Test"
SPWebApplication webApp = SPWebApplication.Lookup(new
Uri("<URL>"));
SPWebService service = SPWebService.ContentService;
SPWebConfigModification connMod = new
SPWebConfigModification();
connMod.Path = "configuration";
connMod.Name = "connectionStrings";
connMod.Value = " <connectionStrings> </connectionStrings>";
connMod.Owner = Assembly.GetExecutingAssembly().FullName;
connMod.Type = SPWebConfigModification.SPWebConfigModificationType.EnsureSection;
webApp.WebConfigModifications.Clear();
webApp.WebConfigModifications.Add(connMod);
//SQL Connetion String
SPWebConfigModification webConfigMod = new
SPWebConfigModification();
webConfigMod.Owner = "Smartrider";
webConfigMod.Type = SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode;
webConfigMod.Value = String.Format("<add name=\"{0}\" connectionString=\"{1}\" providerName=\"{2}\"></add>", "conn", "Data Source=<datasource>;Initial Catalog=<databasename>;Integrated Security=True", "System.Data.SQLClient");
webConfigMod.Path = "configuration/connectionStrings";
webConfigMod.Name = "sqlConn";
webApp.WebConfigModifications.Add(webConfigMod);
//Add NetworkShare URL
SPWebConfigModification appConfigMod = new
SPWebConfigModification();
appConfigMod.Owner = "Smartrider"
appConfigMod.Path = "configuration/appSettings";
appConfigMod.Name = String.Format("add [@key='NetworkURL'] [@value='{0}']", value);
appConfigMod.Value = String.Format("<add key='NetworkURL' value='{0}' />", value);
appConfigMod.Type = SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode;
webApp.WebConfigModifications.Add(appConfigMod);
webApp.Update();
service.ApplyWebConfigModifications();
  • You also want to add code to remove the entry when the Feature is Deactivated. One way to do this is to find all the entries that are inserted by Owner name "Smartrider".
public
override
void FeatureDeactivating(SPFeatureReceiverProperties properties)
{
SPWebApplication webApp = SPWebApplication.Lookup(new
Uri("URL"));
try
{
RemoveEntries(webApp);
webApp.Update();
webApp.Farm.Services.GetValue<SPWebService>().ApplyWebConfigModifications();
webApp.WebConfigModifications.Clear();
}
catch (Exception ex)
{
throw ex;
}
}
//Remove Entries made to web.config by Owner name "Smartrider"
private
void RemoveEntries(SPWebApplication webApp)
{
try
{
List<SPWebConfigModification> entriesToRemove = new
List<SPWebConfigModification>();
foreach(SPWebConfigModification configMod in webApp.WebConfigModifications)
{
if(configMod.Owner == "Smartrider")
{
entriesToRemove.Add(configMod);
}
}
if(entriesToRemove.Count > 0)
{
for (int i = entriesToRemove.Count - 1; i >= 0; i--)
{
webApp.WebConfigModifications.Remove(entriesToRemove[i]);
}
}
}
catch
{
throw;
}
}
9.     Deploy the code and check the web.config file to verify your entries.
10.   Done

Hemant Datta is the COO  for JHC Technology.  He can be reached at hdatta(at)jhctechnology.com, @hdatta, or connect with him on LinkedIn.

Thursday, May 30, 2013

SharePoint and the Cloud v2.0


Many years ago when I first began my SharePoint consulting career I noticed a new technology called VMWare ESX. VMWare ESX at the time gave companies and independent consultants, such as myself, the ability to have a "Bare Metal" product that ran directly on server hardware, allowing virtual servers to also use hardware more or less directly. I began playing with the VMWare ESX building Windows Server virtual machines that ran Microsoft Office SharePoint Server 2007 and SQL Server 2005. This technology was great and lasted for a couple of years. I have built several solutions for customers using this technology until I was introduced to "Cloud Computing".

Cloud Computing has enabled me to completely set up different infrastructures based on my clients requirements without necessarily taking up closet space in a customer’s place of business. Cloud computing has enabled me to provide 99.9% server uptimes for customers across the globe. You are probably wondering, "What does this mean and how can Cloud computing benefit me and my business, especially in the SharePoint world?"


SharePoint is one of the mightiest collaboration tools available today, especially with the latest revision of SharePoint 2013. Imagine being able to have unlimited traffic, multi-tier, redundant carriers anywhere in the world. Users in Tokyo and Washington, DC have zero lag time when accessing their SharePoint sites. This is due to the flexibility that you have with Cloud Computing and Geographical Data Centers.
Noticing a bottleneck when users are visiting your site during peak hours? Well Cloud computing allows you to spin up a new server within minutes. Talk about being able to satisfy your clients at a moment’s notice.

Without getting into too much detail, many organizations are now looking to take full advantage of the Cloud for SharePoint to manage and deliver their business critical content. Moving your SharePoint instance to the Cloud can give you a piece of mind by reducing budget costs over 60%.

Gary Arrington is the Cloud Consultant & SharePoint SME for JHC Technology. He can be reached at garrington(at)jhctechnology.com or connect with him on LinkedIn.

Tuesday, May 28, 2013

How to Force Download the Address Book within Outlook 2010

When making a name changes to existing email accounts for Exchange/Outlook users there may be a long delay while the updated information propagates throughout all the servers of your Enterprise.  Here is a quick guide to follow to get the change completed faster.

Perform Task on Exchange Server 2010

After changes within Exchange such as Names change, run script:

Get-OfflineAddressBook | Update-OfflineAddressBook

c:\Windows\system32>Get-OfflineAddressBook: Update-OfflineAddressBook


  
Perform Task on Outlook Mailbox:

The Name change has been completed from within the Exchange server but not fully populated throughout all Outlook mail accounts.  In order to force your Outlook to update now, follow these steps.  Otherwise the user will have to wait until all of the servers update taking over a 24 hour time frame.

To force a full download of the address book

  1. Start Outlook, click
  2. Tools, click
  3. Send/Receive, and then click
  4. Download Address Book

Outlook Force Download Address Book


This process may take a while to complete.  There will be a progress window and once completed, you should have finalized the forced download.



Wanda Bannerman is the Mobile Architect for JHC Technology.  She can be reached at wbannerman(at)jhctechnology.com.

Thursday, May 23, 2013

The Importance of Network Security in Business

Networks, including the internet, are one of the most essential things to businesses. Without computer networks, companies would be lost and would not have a way to communicate without these systems and this would cause businesses to operate slower. Starting relationships between many businesses, networks in many ways become synonymous with the groups and businesses they bring together. Business employees, customers, and business partners would have available access to their information stored in network systems, could get to their network systems and share them easily among themselves. Computer networks give their owners speed, ability to connect, and ultimately value to their users. They give possible solutions for business difficulties and issues that would not be possible to other businesses. Computer networking systems are required for electronic communications. As time moves on, businesses spend a ton of money on computer systems that are used to manage various functions such as accounting, human resources, customer service, purchasing, inventory management, etc. In a world considered perfect, companies would be able to combine all of their computer systems together both new and old. In order to ensure the security of their networks, most businesses take physical precautions: making sure their server is located in a secure environment, make sure all security features are enabled, use both hardware and software firewalls, set up a strong password and change it every 6 months, install the latest software and always using Wi-Fi has the primary means of connecting to the internet.

The use of personal computers in industry and commerce has expanded dramatically in the last decade. Large gains in employee productivity are possible as a result of this technology. However, ensuring the security of the processes and the privacy of data that these machines access is a very hard problem. Solutions that ensure security by preventing access by appropriate users are inconsistent with the gains in productivity that are possible. At JHC we use CORE as a strategy to help solve the issue, CORE stands for Cloud, O Trust, Regionalized and Elastic. CORE provides the same user experience, application functionality, hardware performance, security etc. It achieves rapid application deployment, security, performance and speed and it reduces costs. Network security is a problem that network administrators face. Threats that affect network security are vulnerabilities, spyware, spam, phishing, malware, cybercrime and misleading applications. It is something that network administrators should keep a careful eye on. For example, if the home network does not have any security measures in place, then the person is at a high risk of data loss due to hacking. Network security is something that businesses do not take very lightly because they want to protect their valuable information and network resources from hackers. It is a problem because of unauthorized use and can be resolved by increasing the security encryption levels.

Kelechi Uzo-Okoro is the Administrative Assistant for JHC Technology.  She can be reached at kokoro(at)jhctechnology.com or connect with her on LinkedIn.

Tuesday, May 21, 2013

Securing Your Wireless Device?

Anybody who has ever connected to a wireless network has probably done this.
Hold on… let me take a step back. Today I am referring to "wireless" as your standard Wifi (aka 802.11, home network, free coffee Wifi) and not your cellular phone service.
One day you decided to get a wireless router. You set it up and you are off running. You connected your smartphone, tablet, laptops and any other wireless enabled device, but did you ever think how it works and what happens when you are not near your wireless network?
Here is a quick and dirty explanation. When you enable your wireless device, that device starts to call out for all the wireless networks you have ever connected to. These are invisible beacons going through the air asking where is “Linksys”, “Home Wifi”, “GoGoInflight” etc. If you get a response from any device saying that they are “Linksys,” or something else to which you have previously connected, you automatically connect as if magic.

There are several problems with this. First, your device beacons for every single wireless network you have ever connected to. Second, your device can continue to beacon even if you are already connected.
Think like a bad guy. There are many free applications out there that can see every device in their area that beacons. They even see the network the device is looking for. So now they can trick your device to connect to them. If your device does connect, they now have the possibility to pull information from your device, or worse, and this includes stealing bank, work, or e-mail passwords on the fly.

How do you protect yourself? First, turn off your Wifi on your device when it is not in use. Second, if you do connect to free (or paid) Wifi that is not from a trusted site like work or home, then don’t bank or browse to sensitive websites where bad guys can steal your information.
And since you turn your Wifi off, turn your Bluetooth off as well. Conserve your battery while you are at it.

Ernesto Fuller is the Senior Security Administrator for JHC Technology. He can be reached at efuller(at)jhctechnology.com or connect with him on LinkedIn

Saturday, May 18, 2013

JHC Speaker at SharePoint Saturday, Baltimore, MD

JHC presented at the SharePoint Saturday in Baltimore, MD. The session, "Run an Effective SharePoint Governance Board and Avoid it Being Just a Status Update Meeting" focused on the following topics:
  • What is an effective Governance Board? A simple definition with a simple purpose
  • How to measure Board's effectiveness
  • As a facilitator, how to work with different business groups and manage personalities during Board meetings
  • How to get members actively involved
  • Tips to avoid being just a Status Update meeting
  • What to talk about at Board Meeting
  • What not to talk about at Board Meeting
  • 5 Key Elements to a successful and productive Board Meeting


Hemant Datta is the COO  for JHC Technology.  He can be reached at hdatta(at)jhctechnology.com, @hdatta, or connect with him on LinkedIn.

Friday, May 17, 2013

Getting Started in the AWS Cloud

As a systems administrator, I am constantly learning new skills to keep abreast with technology.   Upon taking a position with JHC Technology, I learned that I’d be supporting their internal Cloud environment as well as for their government client.  Hearing so much exciting news about Amazon Web Services and its Cloud computing capabilities, I couldn’t wait to get started.

My journey began with a 3 day training session that was hosted by Amazon.  There, I was able to grasp a hold of AWS and their mission to provide secure, scalable and compliant infrastructure and application services. Soon will be gone the days of purchasing thousands of dollars in equipment, obtaining and securing space for huge data farms, maintenance costs associated with a large support staff and along with updating outdated equipment.  Within an instance, an entire development environment can be deployed according to a client’s specific need and ready to go within the hour. 

I was introduced to terminologies such as “elasticity” and “scalability” - two key factors in a Cloud environment which allow a business to scale up or down according to its need and to pay only for what is used.   A Cloud environment also allows for a global reach within minutes as opposed to the weeks or even months it would take to deploy such an environment in the past.  I also learned the correlation between traditional Windows administration and that of a Cloud environment. 

After working with a Windows platform for so many years, the correlation between that and AWS was very similar.  Much of my knowledge of Windows based platforms translated over the Cloud environment and I didn’t have to start from scratch.  I learned about the AWS management consoles, such as AWS Management Console and Elastic Wolf, that provide a one stop shop for all of your administrative needs.  From creating accounts for AWS management to spinning up instances to support an entire domain, this can be done from one location and there’s no need for application hopping.

I was also able to create my very own AWS account.  The account provides access to various tutorials, labs and a plethora of tools, such as EC2 that is used to create virtual servers in the Cloud, VPC for isolated Cloud resources, and Cloud Front, S3 and Glacier to manage storing content and delivery.

With further training, I now support a cloud environment for a government client.  I supply on demand Cloud administration and work closely with our client to design, deploy and support future Cloud solutions. 


Jeronna Freeman  is the Cloud Administrator for JHC Technology.  She can be reached at jfreeman(at)jhctechnology.com or connect with her on LinkedIn.

Tuesday, May 14, 2013

JHC to Present at SharePoint Saturday, Baltimore on May 18th


Hemant Datta, Director of Operations at JHC, will be presenting at this month's SharePoint Saturday in Baltimore, MD. The session, "Run an Effective SharePoint Governance Board and Avoid it Being Just a Status Update Meeting" will focus on the following topics:

  • What is an effective Governance Board? A simple definition with a simple purpose
  • How to measure Board's effectiveness
  • As a facilitator, how to work with different business groups and manage personalities during Board meetings
  • How to get members actively involved
  • Tips to avoid being just a Status Update meeting
  • What to talk about at Board Meeting
  • What not to talk about at Board Meeting
  • 5 Key Elements to a successful and productive Board Meeting

Friday, May 10, 2013

Non-Technical Cloud Barriers Series

Over the last four years working in the Cloud IaaS arena, I have come to the realization that many of the “Barriers” Organizations face when moving to a Cloud IaaS platforms (like Amazon Web Services) have less and less  to do with technical issues but more to do with what I like to call “Non-Technical Cloud Barriers.”  Cloud platform providers have made technological leaps over the last 6 years that have resolved the majority of the Cloud technical limitations for industry specific clients (i.e. Banking, Government, Healthcare, etc).  Additionally, cloud vendors, like AWS, have made it a priority to provide industry compliant cloud platforms that meet the following certifications/compliance:
  • SOC 1/SSAE 16/ISAE 3402
  • SOC 2
  •  FISMA, DIACAP, and FedRAMP
  •  PCI DSS Level 1
  • ISO 27001
  • International Traffic In Arms Compliance
  • FIPS 140-2
  • HIPAA
  • CSA
  • MPAA

Now that the IaaS Cloud platforms have matured from a technology perspective, the “Non-Technical Cloud Barriers” have become a focal point of the Cloud funnel.   These “Non-Technical Cloud Barriers” can account for Cloud IaaS project stalling and endless meeting loops that tend to spin out of control.  Some of these barriers include, but are not limited to:
  • How do organizations procure cloud services in a non-friendly, pay as you go model (i.e. firm fixed price model)?
  • How do organizations justify going to an IaaS cloud platform when they just bought new Hardware for their organization?  What do they do with their old hardware and datacenter?
  • The Cloud is less secure  than my own datacenter
  • If we move to the cloud and we don’t have our own datacenter then is my job going away? 
  • Traditional infrastructure vendors adapting to organizations wanting to move to cloud computing.
  • Overall lack of education on Cloud computing
  • General fear of Cloud computing solutions
  • How do I change our IT organizational processes (Change Management, IT governance, approval process, lifecycle…) to Cloud computing model?
  • Overwhelmed by the “end solution” and missing sight of low hanging fruit (Quick wins).

The purpose of this blog series is to address these “Non Technical Cloud Barriers” and provide organizations looking to move to IaaS Cloud platform the information necessary to remove and/or mitigate these Non-Technical roadblocks before they become significant impacts on their migration to IaaS Cloud Platform.  The first article in the series will be released in May and will address the following topic; “How do organizations justify going to an IaaS cloud platform when they just bought new Hardware for their organization?  What do they do with their old hardware and datacenter?”
James Hirmas is the CEO for JHC Technology.  He can be reached at jhirmas(at)jhctechnology.com, @JHC_JamesHirmas, or connect with him on LinkedIn.

Monday, May 6, 2013

Cloud Solution? It's Simple Math

I had a great chance to get super nerdtastic this past weekend with a woman at an insurance underwriting firm.  Her job is to develop the insurance policies of senior management of large IT firms.  When she found out I worked in and around cloud technology, it was her chance to ask about the oft described “cloud solution provider.”  It gave me a chance to think about what that really means.  What makes a company a “cloud solution provider”?

I look at it this way.  There are companies that are, in essence, “cloud product providers,” and companies that are “cloud solution providers.”  Maybe there are even a few flavors in between.  But there’s a big difference?

For me, I think of it in the context of a math discussion.  In math, every problem has a solution.  You can’t give the solution without knowing the problem.  One begets the other.  A “cloud solution provider” digs to the core of your needs and develops the proper answer for your organization.

However, a “cloud product provider” works the other way, just the same as any other off-the-shelf product.  Those firms have a product and you have to find the one that best (but probably not fully) meets your needs.

Therein lies the rub.  IT in the cloud isn’t a one size fits all world.  IT in the cloud isn’t even a two- or three-sizes-fits all.  There needs to be a unique understanding of the problem before you can even get to the solution.

It’s important to draw that distinction among companies offering “cloud solutions”.  Be sure to find one that takes the time to fully understand your needs before offering its solution.  Cloud is a new and dynamic space, full of incredible opportunities.  But it’s also full of potential speed bumps or worse from firms that are simply jumping on “cloud solutions” as a buzzword.  Be sure to know what you’re dealing with and how that provider fits your roadmap.  A “cloud product provider” probably won’t be able to help you move forward.  They might not be able to work with you to develop a roadmap to gain efficiency and agility.  They’ll get you a product and let you figure out the rest. 

If you’re truly ready to leverage the cloud in a big way, or you’re just interested in dipping in your toe, it would behoove you to find that “cloud solution provider,” because that will be your best way forward.

But that’s how I see the “cloud solution” discussion.  How about you?  What makes a company a true “cloud solution provider”? 

Matt Jordan is the Cloud Services Manager for JHC Technology.  He can be reached at mjordan(at)jhctechnology.com, @matt_jhc, or connect with him on LinkedIn.