Search This Blog

Loading...

Friday, August 26, 2016

Material Design

 Material Design   is a design and developed by Google.(2014)

 Material design is one of the most influential visual philosophies in design. It’s shaping
 the way people see and interact with interfaces because of clear design and usability guidelines like a  paper effect.

 Material design framework works with all the android platforms and is know for flat
 graphical interface. Google’s new visual design framework is flat, elegant, and vibrant
 creating a unified Android experience.

 Material design is a comprehensive guide for visual, motion, and interaction design across platforms  and devices. Android now includes support for material design apps.

The material theme provides a new style for our  app, system widgets that let you set their color palette, and default animations for touch feedback and activity transitions.

Material design mostly three basic concepts:

Realistic visual cues:- The design is grounded in reality and actually inspired by design       with paper and ink.


 Bold, graphic and intentional:- Fundamental design techniques drive the visuals. Typography, grids, space, scale, color and imagery guide the entire design. Elements live in defined spaces with a clear hierarchy. Color and type choices are bold and deliberate.



Motion provides meaning:- Animation is a key component of Material Design, but it can’t just be there for the sake of movement. Animations need to happen in a single environment, serve to focus the design and include simple and easy transitions. Movements and actions should mirror the physical world.




 



Friday, August 19, 2016

Test case designing using BVA OR EP?

Boundary value analysis(BVA) and Equivalence partitioning(EP) both are test case design strategies in black box testing.

The values at the extremes (start/end values or lower/upper end values) of such classes are known as Boundary values. Analyzing the behavior of a system using such values is called Boundary value analysis.

For example: How do you do BVA for range between 10-20?

The boundary value analysis can have 6 text cases.
n,n-1,n+1 for the upper limit and n,n-1,n+1 for the lower limit.
In our example, as per BVA, there are 6 test case data, 

9,10,11 and 19,20,21.



Equivalence partitioning  is a technique to divide the input data of software into different equivalence data classes i.e for input values.
For exampleHow do you do EP for range between 1-10?
Test condition
1. Any number greater than 10 i.e 11, then it is considered invalid.
2. Any number less than 1 i.e 0 then it is considered invalid.
3. Numbers 1 to 10 are considered valid.
4. Any 3 digit number say -100 or 100 is invalid.



These cases are derived from the requirements specification for input data. These method reduces the time for testing and useful for effective test cases.

Tuesday, August 16, 2016

Introduction to Ajax and Its Pros and Cons

AJAX

Ajax in nothing but short form of Asynchronous JavaScript And XML.By using Ajax we can Post and Get the data without fully page load event .Ajax implementation uses JavaScript functions to call methods from a web service, webpage request in response to get response.

Ajax Syntax for C# .NET-

function MyFunction(Param1, Param2) {      
 $.ajax({
        type: "POST",
        url: "MyPage.aspx/MyMethod",
        data: "{ Param1: '" + Param1+ "',Param2: '" + Param2 + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
            // On success                 
        },
        Error: function (x, e) {
            // On Error
        }
    });
}
type-Type of request Get or Post.
Url-Requested Page URL.
Data- Parameter to pass to the requested function.
ContentType-Encoding type.
DataType-Data format it may be XML/JSON.
Success-What needs to be done on success of ajax call.
Error- What needs to be done on failure of ajax call  

Advantages of AJAX

  • Reduce the traffic travels between the client and the server.
  • Response time is faster so increases performance and speed.
  • We can use JSON(JavaScript Object Notation) which is alternative to XML. JSON is key value pair and works like an array.
  • We can use Firefox browser with an add-on called as Firebug to debug all Ajax calls.
  • AJAX communicates over HTTP Protocol.

Disadvantages of AJAX

  • JavaScript disabled browsers cannot use the application.
  • It can increase design and development time
  • More complex than building classic web application
  • Security is less in AJAX application as all files are downloaded at client side.
  • Search Engine like Google cannot index AJAX pages.We cannot Bookmark AJAX URL because It might be same for more then one page.

Brief introduction of TX Text Control and print "Hello World" in pdf file

Hi,

Sharing a not new but different Technology to generate a report by programming with TX Text Control

It's a technology to generate a report in format of  '.pdf' and '.rtf'. In my current project, I am using it to generate a Dynamic Report with program which contain tables and paragraph of text. Generally, Tx Text control is using with '.tx' type template which contain all static information and dynamic data bind with Tx text control. Here, MailMerge class is playing crucial role. Main classes which generally use, are
1. ServerTextControl
2. MailMerge
3. SaveSetting
4. LoadSetting

Hello world!! program

var tx = new ServerTextControl();
var res = "D:\tmp\12345.pdf";
tx.Create();
tx.Text = "Hello World !!";
var s = new SaveSetting();
tx.Save(res, GetOutputType(res), s);

Bootstrap Introduction

                                                             
Introduction:

Bootstrap is a free, open-source and is the most popular HTML, CSS, and JavaScript framework developed by twitter for creating responsive web applications.

It includes HTML and CSS based design templates for common user interface components like Buttons, Dropdowns,  Tabs, Forms, Tables, Navigations, Alerts, Modals etc. along with optional JavaScript extensions.

Bootstrap framework is based on open standards - HTML, CSS and JavaScript. This means bootstrap can be used with any server side technology and any platform. You can use it with any web application built with any server side technology like ASP.NET, JAVA etc.

What are the advantages of using bootstrap

Supports responsive design : One of the greatest advantages of using bootstrap is that it helps us create responsive web applications faster and easier. So the obvious question that comes to our mind is, what is a responsive web application? A responsive web application automatically adapts to different screen sizes (i.e desktop computers, laptops, tablets. mobile phones etc). A responsive application provides optimal viewing and interaction experience i.e easy reading and navigation with a minimum of resizing, panning, and scrolling across a wide range of devices. So you don't have to worry about your application not being compatible with multiple devices.

Saves lot of development time : One of the biggest advantages of using Bootstrap is that it saves lot of development time. Instead of writing code from the scratch, bootstrap offers ready made blocks of code that you can use and customize to suit your application requirements. There are also many websites out there that offer free and paid Bootstrap themes that saves even more development time.

Consistency : Bootstrap was developed by Twitter to encourage consistency across thier internal tools by giving their developers a centralised development code. Since all the developers are working using a centralised code, the end result is consistent regardless of who’s working on the project and which web browser is being used.

Biggest Professional Rivalry.......!!!!

Hi All,

Going to share my experience on one of the biggest professional clashes that happens within an organization. Personally they all are friends and colleagues but when it comes to their work, it always lead them to havoc which most of the times cost the project in which they are working.

Yes, I am talking about Testers v/s Developers.

I have recently joined my current organization and there I faced this for the first time in my professional career. So, I have analyzed and derived few of the reasons due to which this all time riot between testers and developers keep on thriving.

1)  The stress and the high pressure caused by the strict deadline set by the management, to complete the project in a much shorter time, than it would normally take is a most prominent reason that could result in an out busting of conflict between the two.

2) Taking base of my first point, usually we have fluctuating requirements from clients end which leads to the last time changes in a software. This makes developers to stretch their working hours and testers to run the test cycle again and again in order to finish the project under the deadline. This is obvious if someone is working extra hours under immense pressure of deadline and not getting proper amount of time for the work he/she is doing then the chances of errors and bugs are much higher.
Below flow will explain the reason for all this:




3) The difference in the job functionality between the two can also result in an interpersonal conflict. Primary responsibility of the developer is to maximize efficiency by getting the work done using the resources smartly, whereas the most desired responsibility of the tester is effectiveness, i.e. to ensure quality when delivering the end product. The difference between the job functionality and the goals of the two can automatically lead to a clash.

4) The difference in the level of experience can also result into a clash or conflict. Mostly, highly experienced developers work with the less experienced testers and the difference in the opinion and the different perceptions of the two regarding the organization can outburst the clash. Most of the testers have issues regarding job securities and self-esteem, as most organizations give more importance to the developers and to stay and prove themselves, testers have to work and exert more.

5) Another possible reason of the conflict can be the difference in the personality attributes and mental process of the testers and the developers. Most of the developers become too protective when testers identified a defect or flaw in an application, coded by them.

MVC Hidden controls are not validated

If you have used default MVC validation framework (using Annotations and jquery.validate.js) you might have faced issues with validating the controls which are hidden. As an example, in one of the scenario, I had a MVC view with too many controls, so to reduce its screen layout, I wrapped the MVC view in small expand-collapse divs, but this caused the validation to be disabled for the hidden fields.

After bit of investigation I found that it is due to the default settings of jquery.validate.js framework which explicitly excludes validation of all the hidden controls by setting the below option:
















To change the settings, I have injected custom code on window.load(). Example shown below:

$(window).load(function (e) {
    if ($('#<your formID>')[0] != undefined) {
        var validatorInitialised = $.data($('#<your formID>')[0], 'validator');
        if (validatorInitialised) {
            var settings = validatorInitialised.settings;
            //settings.ignore = ":hidden";
            settings.ignore = "";
        }
    }
});

This code first checks if the MVC page as a valid form to POST and that if there are validations applied on the page, changes the settings by removing the 'hidden' tag from the ignore list.



How to assign defect priority and severity?


Defects are given a priority and severity level. Such classification is absolutely needed as the development team can not resolve all defects simultaneously so we need to indicate how soon we want to get the defect fixed, and how big the impact on the functionality of the application under test is.Here are some classification levels:


Defect priority



High Priority: Fix the defect immediately.A core functionality fails or test execution is completely blocked.

Medium Priority: Fix the defect soon.An important functionality fails but we don't need to test it right away and we have a workaround.

Low Priority: Don't fix this defect before the high and medium defects are fixed.

Defect priority indicates the impact on the test team or test planning. If the defect blocks or greatly slows down test execution, we might want to select the highest grade for the defect priority.



Defect severity



Critical: A core functionality returns completely invalid results or doesn't work at all.

Major: This defect has impact on basic functionality.

Moderate: There is impact on the business, but only in a very few cases.

Minor: The impact on the business is minor. Any user interface defect not complicating the functionality often gets this severity grade.

Defect severity indicates the impact on the business of the client. If important functionality is blocked or if that functionality functions incorrectly,then we mostly selects the highest defect severity.
Assigning a defect priority and severity is always subjective as we measure the impact from our point of view.

Friday, August 12, 2016

Extension Methods in c#

 What is Extension Method

1. Extension method feature introduced in c# 3.0.
2. Extension of a method is a way to add some more methods as per requirement into an       existing library.
3. For Example in string we have methods like length(), split(), substring() etc. If we want that we should     have one more method that will count number of words in a string we can extends string methods by     adding one more method WordCount().

Properties of Extension Methods

1. It is a static method.
2.It must be in a static class
3. It uses "this" keyword as first parameter with a type in .NET.

Sum of Digits of a number using extension method

Step1. Very first we will create an extension method.


The above method takes and integer number as input and calculate the sum of its digit and returns sum of digits of the number.

Step 2. Now we are going to call this method from code like other inbuilt methods.














And we have created an extension method for int numbers and we have seen it can be call like other inbuilt method. 


Example Flow

















Thursday, February 18, 2016

Hi All,

Sharing another live issue faced in my current project (SP 2013).

A user who is part of Owners group on a SharePoint site (having Full control), is not able to create subsites. When they do they receive an error “Sorry, you don’t have access to this page” or “Access Denied”.

Sharing the link below to the post on my blog:

https://letussharepointblog.wordpress.com/2016/02/17/full-control-rights-user-owners-group-cannot-create-sub-sites/

Wednesday, October 14, 2015

SharePoint Crawl DB size increasing @20GB per day


Recently, one of my SharePoint farms faced an issue where the volume utilization of DB server (SharePoint crawl database) went upto 99% within 10 days.

Analysis:
- Looking at the crawl DB log in SharePoint, the incremental crawl was running every 1.5 hours with 0 success and 100% failures.

- There were about 961K errors with each incremental crawl scheduled at every 2 hours.









- There is a temporary folder that Crawl uses to place files temporarily on the server. The path is C:\Users\"SPAdminAccount"\AppData\Local\Temp\gthrsvc_OSearch14\

- I found out that this temporary folder was somehow missing / deleted.

Solution:

On creating the above mentioned folder manually, the success rate of crawl went high and there were very less failures (as expected)









Post this, the space utilization went about 10 MB a day which is expected during crawl.

Wednesday, October 7, 2015

SharePoint detect when crawl account is accessing your page


Many a times we put some code in our SharePoint pages to add an entry in a list, whenever  a particular page is accessed. This is usually done for getting the page visit count or to keep the record of the latest visited page/document per user. However you may not want to add entries for the search account when it performs a crawl of your content source as this could cause serious performance issues; as we faced, since we were having multiple site collections and in those site collections we had our custom document set home pages implementing the same logic of updating a list whenever the page is accessed.

In order to fix this, I had to detect that whether the page is being accessed by normal user or by the SharePoint Crawl account. The best way I found to detect the page access is using "User-Agent". When the Crawl accesses the page, it adds following string as user agent in Request headers:

MS Search 6.0 Robot
User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows NT; MS Search 6.0 Robot)

I was simply able to detect whether the page is accessed by normal user or SharePoint Crawl by checking the following value:

if (!HttpContext.Current.Request.UserAgent.Contains(“MS Search 6.0 Robot))
        {
          //Add your logic to add/update the list
        }

This works for both SharePoint 2010 as well as 2013 since the Robots tag value is same for both the versions.


Monday, August 24, 2015

Enable or Disable Grid Sorting in Dynamics CRM 2011, CRM 2013 and CRM 2015


Just got the task to disable the associated grid sorting in Dynamics CRM 2013




So i looked at the OOB CRM features to achieve this but found there is no option available to disable/enable the grid sorting :(


Then i extracted an unmanaged solution which includes the required entity and modified the "customizations.xml" as shown below.


Don't get confuse you just need to find the <savedqueries> in XML and then search for the required view for which you want to disable the sorting and add the disableSorting="1" attribute to the particular cell.

After updating XML save it and import that back to CRM and you will notice now sorting is disabled for the particular column.




and if you want to enable sorting again then you will need to update disableSorting="0" or remove the attribute by following the same procedure.



Monday, August 17, 2015

SharePoint Increase search result items limit of Content Search Web Part by using javascript




SharePoint Content Search Web Part allow to show search results upto 50 Items per page.
Out Of The Box you cant allow it to show more than 50 Items per page.

But there may be situations with business needs where you need to override this behavior.
So here is javascript snippet which overrides this behavior and allows more than 50 items in search result.

How to use :

1. Add a Script Editor web part on the same page where Content Search web part is present.
2. Paste the following script and change the maxItems value as per your needs.
3. The script grabs the 2 SharePoint search objects ContentBySerach and DataProvider and overrides it default value to show more than 50 items.



<script type="text/javascript">

var $ocreate = null, maxItems = 100;

Sys.Application.add_init(function() {
$ocreate = $create; $create = updateResultCountCreate;
});

function updateResultCountCreate(a,b){
var ps = Array.prototype.slice.call(arguments, 0);
if(a == Srch.ContentBySearch) b.numberOfItems = maxItems;
if(a == Srch.DataProvider) b.resultsPerPage = maxItems;
$ocreate.apply(this,ps);
}
</script>

  

Friday, August 7, 2015

Change the size of Promoted Links in SharePoint using jquery


A simple way to change size of Promoted Links in SharePoint using Jquery. Copy below code to your common script file that is attache to master page and call TP_PromotedLink function by adding script editor to your web page where promoted links web part is attache.

TP_PromotedLink = function (imageSize, numberOfImage){
var  value; 
$(window).load(function() {
updatePromotedLink();
$('.ms-tileview-tile-root').mouseover(function() {
$(this).find('.ms-tileview-tile-detailsBox').removeClass('promo1');
$(this).find('.ms-tileview-tile-detailsBox').addClass('promo');
});
$('.ms-tileview-tile-root').mouseout(function() {
$(this).find('.ms-tileview-tile-detailsBox').removeClass('promo');
$(this).find('.ms-tileview-tile-detailsBox').addClass('promo1');
});
$('.ms-tileview-tile-detailsBox').mouseover(function() {
$(this).removeClass('promo1');
$(this).addClass('promo');
});
$('.ms-tileview-tile-detailsBox').mouseout(function() {
$(this).removeClass('promo');
$(this).addClass('promo1');
});


});

function updatePromotedLink(){
value =imageSize;
$("<style type='text/css'> .promo1{ top : "+value+"px !important} </style>").appendTo("head");
$("<style type='text/css'> .promo{ top :0px !important} </style>").appendTo("head");
$("<style type='text/css'> div.ms-tileview-tile-titleTextMediumCollapsed{  background: rgba(0, 98, 144, 0.8); font-size: 12px; line-height: 16px;  padding-left: 3px; position: absolute;} </style>").appendTo("head");
var body_width = (imageSize+10) * numberOfImage;
var title_width = imageSize+10;
var title_top = - imageSize/4;
$('.ms-promlink-header').css('visibility', 'hidden');
$('div.ms-promlink-body').width(body_width);

$('div.ms-tileview-tile-root').width(title_width, 'important');
$('div.ms-tileview-tile-root').height(title_width, 'important');
$('div.ms-tileview-tile-content').width(imageSize, 'important');
$('div.ms-tileview-tile-content').height(imageSize, 'important');
$('div.ms-tileview-tile-detailsBox').height(imageSize, 'important');
$('div.ms-tileview-tile-detailsBox > a').width(imageSize, 'important');
$('div.ms-tileview-tile-content > a').height(imageSize, 'important');

$('div.ms-tileview-tile-content').width(imageSize, 'important');
$('ul.ms-tileview-tile-detailsListMedium').height(imageSize, 'important');
$('ul.ms-tileview-tile-detailsListMedium').width(imageSize, 'important');
$('div.ms-tileview-tile-titleTextMediumCollapsed').css('min-width', imageSize);


$('.ms-positionRelative').each(function(){
if($(this).parent().parent().hasClass('ms-tileview-tile-content')){
$(this).height(imageSize,'important');
$(this).css('position','static','important');
}
});

$('div.ms-tileview-tile-titleTextMediumCollapsed').css('min-height', -title_top);
$('div.ms-tileview-tile-titleTextMediumCollapsed').css('top', title_top);

$('.ms-tileview-tile-detailsBox').width(imageSize)
$('.ms-tileview-tile-detailsBox').css('top',imageSize,'important');

$('ul.ms-tileview-tile-detailsListMedium').css('padding','0');

}
}



TP_PromotedLink accept two parameter

1.  imageSize : This is size of image in promoted link. If you want an image of size 150 X 150 than pass 150 as a parameter.

2. numberOfImage : This is for number of image you want to display in one row. If you pass 3 than in a row only 3 image of promoted link are display.

Like below image i add script editor in which i call TP_PromotedLink(150,3); 

than my promoted link is change according to that size




Wednesday, August 5, 2015

SharePoint 2013 online provider hosted Apps setup and creation

SharePoint Central Admin Prerequisites

SharePoint you must have the following service applications provisioned and started:


  1. Subscription Service Application with proxy
  2. Subscription Settings Service instance started
  3. Application Management Service Application and proxy
  4. App Management Service instance started
  5. Must have User Profile Service started

Prerequisite (Need to check if we need to setup ADFS on INT environment?)

  1. SharePoint 2013 server is ready with apps configured
  2. ADFS 3.0 server is ready with realm set to SharePoint.
  3. ADFS is registered with SharePoint as a trusted identity provider.
  4. ADFS 3.0 server is ready with realm set to asp.net provider hosted app
  5. Server is ready for hosting asp.net provider hosted app.
  6. Load balancer configured for provider hosted web application
  7. Certificate is available in private, public part along with password.


Step 1: Create a Certificate

  1. In the development environment you can use a self-signed certificate, but you would need a commercial certificate when you publish your Apps to store. So we will create a self-signed one. In the IIS manager, click on Server Certificates.


  2. Click on Create Self Signed Certificate


  3. Enter some meaningful name like HighTrustCert and Click on Ok.


  4. Now we need to export the personal exchange format (.pfx) file. Right Click on the Certificate in IIS click on Export and provide an accessible location. Also enter the password that you want to use and Click on Ok




  5. Next, double click on the Certificate in IIS. Click on Details tab and click on Copy to File.


  6. Now you should see the Certificate Export Wizard (remember earlier we exported the .pfx file). The first screen elucidate the significance of what we are doing. Keep Clicking Next across the three screens. Below screenshots demonstrate the same. I keep all the default options. Just one thing to mark that now we are now exporting the .cer file. I choose the same location. Click on Save.





  7. And finally, click on Finish. You should see you the message “The export was successful”.

Step 2: Run Windows PowerShell cmdlets to set up trusted security token service




  1. Run SharePoint 2013 Management Shell as administrator. First thing first, you need an Issuer ID. An important point, it has to be Lowercase only.

    Create a GUID with Visual Studio. Make sure all letters are lowercase. For e.g. 7591c7a2-cc56-40ef-8f71-20a4d8450ed7
  2. Run the below PowerShell cmdlets to create trusted security token service.
    $publicCertPath = "D:\Certificate\WB_EBiz_WFACert.cer"
    $appId = "7591c7a2-cc56-40ef-8f71-20a4d8450ed7"
    $spurl = "http://wbgmsspsnd017/sites/EBiz"
    $spweb = Get-SPWeb $spurl
    $realm = Get-SPAuthenticationRealm -ServiceContext $spweb.Site
    $certificate = Get-PfxCertificate $publicCertPath
    $fullAppIdentifier = $appId + '@' + $realm
    New-SPTrustedSecurityTokenIssuer -Name "WB EBiz WFA App" -Certificate $certificate -RegisteredIssuerName $fullAppIdentifier
    $appPrincipal = Register-SPAppPrincipal -NameIdentifier $fullAppIdentifier -Site $spweb -DisplayName "WB EBiz WFA App"

    This will add certificate to both Personal Store and Trusted Root Certification Authorities store in mmc. To verify, go to your Trusted Root Certification Authorities Store and you should see your Certificate there
    Significance / additional info of the cmdlets
    issuerID : assigning the GUID generated in the previous step
    publicCertPath : path where I saved my .cer file.
    web : your Developer site URL
    realm : should be the same as your farm ID

    New-SPTrustedSecurityTokenIssuer : Just a tip, when you use the Name parameter it can be helpful to include a readable name, such as “High Trust App” or “Contoso S2S apps” instead of the issuer ID.

    IsTrustBroker: this flag ensures that you can use the same certificate for other apps as well. If you don’t include this, you might receive “The issuer of the token is not a trusted issuer" error.

    So we have two possible approaches each having their own pros and cons .i.e. use the same certificate shared by multiple apps Or use a separate certificate for each app. Read additional details at Guidelines for using certificates in high-trust apps for SharePoint 2013
    iisreset : to ensure the Issuer becomes valid, else it takes 24 hours.

    Additionally you can turn off the https requirements using below PowerShell cmdlets. But ensure to turn it on by changing $true to $false in the second cmdlet below.
    $serviceConfig = Get-SPSecurityTokenServiceConfig
    $serviceConfig.AllowOAuthOverHttp = $true
    $serviceConfig.Update()

    Refer to the screenshot below of for the complete steps:




Step 3: Create a Simple “High Trust” Provider Hosted App using Visual Studio 2012 (DEVELOPMENT)




  1. Click New Project -> App for SharePoint 2013



  2. Select ASP.NET MVC web app



  3. Now select the PFX certificate generated in the last step. Provide password and Issuer ID



  4. This will create a new MVC project.



  5. Now Visual studio created two projects with in the same solution. MVCApp1 is the SharePoint App and MVCApp1Web is the remote webapp. Only artifact of the MVCApp1 is the appmanifest.xml. This is similar to what feature.xml to WSP. We provide the version, permission and startpage details of the app.



  6. Make sure Windows authentication is enabled for web project, and check other settings as well.



  • Now you can directly debug the app by pressing f5. Now login to app using your windows credentials and trust the app. This will lead to sample app hosted from VS2013 if all the settings are right.



Step 4: Create App Domain and Set for SharePoint (DEPLOYMENT)

Configure App Domain

  1. Create App Catalog site – new site from going in Central Admin – Apps – Manage App Catalog, Create new site collection

Configure App URLs

  1. If you get a message - The Subscription Settings service and corresponding application and proxy needs to be running in order to make changes to these settings.
    Run the belowPS script to create new service application for subscription service... Though service is already running but service application is missing

    $account = Get-SPManagedAccount "WB\spm13devep1"
    $appPool = New-SPServiceApplicationPool -Name SubscriptionServiceAppPool -Account $account
    $serviceApp = New-SPSubscriptionSettingsServiceApplication -ApplicationPool $appPool -name "Subscription Settings Service Application" -DatabaseName "SP2013INT-SubscriptionSettingsDB"
    $serviceAppProxy = New-SPSubscriptionSettingsServiceApplicationProxy -ServiceApplication $serviceApp
    Then try again

Step 5: IIS Site Creation (DEPLOYMENT)


  1. App Catalog Server (IIS) Configuration
    1. Copy the Personal Information Exchange (.pfx) and published files into the app catalog server.
    2. Enable the required features (refer the below screenshot) through “Add Roles and Features” in Server Manager.
    3. Import the Certificate, IIS -> Server Certificates -> then click “Import” link in the right top.
    4. Create a Folder for place the web app published files (ex. C:\inetpub\wwwroot\eBizApps )
    5. Create a Website in IIS.  Right click in “Sites” then choose “Add Website”.
    6. In the “Add Website” window, enter the proper site name, select the physical path (C:\inetpub\wwwroot\eBizApps) and then click “OK” button.
    7. Select the site name (ex. eBizApps), click the “Bindings” link in right side. 
    8. In the Site Bindings window, Click “Add” button”
    9. In the Add Site Binding window, select the Type as “https” and then select the SSL certificate. And then click “OK” button
    10. Browse this site using Internet Explorer.  The site will open.
  2. Once created, create SSL binding also
    Click Bindings on right side
    So we should have 2 bindings now
    This website is empty now we need to deploy content from code (11 machine) to 08 machine which is here
    Deployment involves App deployment and Website deployment
    App Deployment: Before publishing the app, a new client ID for the App should be generated form the app site. SharePoint uses this client ID to validate the App file while installing. Navigate to appregnew.aspx
    Navigate to https://sp2013.gsi.local/sites/apps/ and generate AppId
    So we might get a result like this when hit create button
    The app identifier has been successfully created.
  3. The App Domain is the domain name set on the remote web application server’s IIS Site that will be hosting this app.
    App Id:    1b395959-b36f-47b3-84dc-f695d3a6a585   -- this is APP/ CLIENT ID
    App Secret:    Cf6n+YWaBJ8bDIqJp656J76IoJNPcNh+C3H99Ob0i/U=
    Title:    EBizWFA
    App Domain:    wbgmsspsnd008
    Redirect URI:    
    Right click the solution and click publish and select Package the app. And enter the client ID and the remote site URL.
    This wizard will generate a package
    Take this package on 08 machine where IIS is. And run this command
    Now IIS website should have all the content. Web project has been deployed
    Make changes to web config file specific to environment.

Step 6: Package SharePoint App


Update clientId in App Manifest file.
Check for correct permissions assigned in AppManifest file. – Web (Full control)
Target url should be of the site to be deployed
Click Finish and this will publish the file in the bin\debug folder under “app.publish” folder
On opening the .app file with good old WINRAR all the resources can be extracted out. And verify appmanifest.xml .

Step 7: Add app to App Catalog

For an app to be consumed, it must be added to an app catalog.

  1. Navigate to the app catalog and select Apps for SharePoint 
  2. Select New App and upload the .app file produced from the last set of steps



Step 8: Add app to site


  1. Access a team site and selected site contents and clicked Add App.
  2. Click on it and click Trust It . Note: If it errors on this step and you’re logged in as the system account, try again using a non-system account.
  3. After install, test by clicking on the app.

    Redirect should work!