Synopsis
This blog post summarizes the steps involved in publishing an OOB B2C electronic accelerator (starter store) on hybris 5602 commerce suite, It
further describes the steps to publish a customized version of the store based on the OOB B2C Accelerator code template.
Setup and Build
Unzip the file to your preferred local folder and execute following from command prompt.
cd ~/hybris/bin/platform. ./setantenv.shant clean all....[input] Press [Enter] to use the default value ([develop], production)develop......all:[echo] Build finished on 3-October-2015 09:34:54.[echo]BUILD SUCCESSFULTotal time: 43 seconds
At the end of this step you have a hybris commerce suit built using development template.
Setting up localextensions.xml
Unlike previous versions, localextensions.xml generated with development template is empty by default, you need to add the extensions that are relevant for your project.
Here is a sample localextensions.xml for publishing OOB B2C electronic store
- <?xml version="1.0" encoding="UTF-8"?>
- <hybrisconfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="resources/schemas/extensions.xsd">
- <extensions>
- <!--
- All extensions located in ${HYBRIS_BIN_DIR}/platform/ext are automatically loaded.
- More information about how to configure available extensions can be found here : https://wiki.hybris.com/x/nZVzC
- -->
- <path dir="${HYBRIS_BIN_DIR}" />
- <!-- ext-platform -->
- <extension name="admincockpit" />
- <extension name="backoffice" />
- <extension name="cockpit" />
- <extension name="hmc" />
- <extension name="mcc" />
- <extension name="platformhmc" />
- <!-- ext-platform-optional -->
- <extension name="ldap" />
- <extension name="lucenesearch" />
- <extension name="virtualjdbc" />
- <!-- ext-cockpit -->
- <extension name="reportcockpit" />
- <!-- ext-commerce -->
- <extension name="btg" />
- <extension name="btgcockpit" />
- <extension name="commercesearch" />
- <extension name="commercesearchbackoffice" />
- <extension name="commercesearchhmc" />
- <extension name="commerceservices" />
- <extension name="basecommerce" />
- <extension name="payment" />
- <extension name="promotions" />
- <extension name="voucher" />
- <extension name="customerreview" />
- <extension name="ticketsystem" />
- <extension name="solrfacetsearch" />
- <extension name="solrfacetsearchhmc" />
- <extension name="oci" />
- <extension name="wishlist" />
- <extension name="commercefacades" />
- <extension name="commercewebservicescommons" />
- <!-- ext-content -->
- <extension name="productcockpit" />
- <extension name="cms2" />
- <extension name="cms2lib" />
- <extension name="cmscockpit" />
- <extension name="bmecat" />
- <extension name="bmecathmc" />
- <extension name="importcockpit" />
- <extension name="classificationsystems" />
- <extension name="classificationsystemshmc" />
- <!-- ext-channel -->
- <extension name="cscockpit" />
- <extension name="mobileoptionals" />
- <extension name="mobileservices" />
- <!-- ext-addon -->
- <extension name="addonsupport" />
- <extension name="b2ccheckoutaddon" />
- <!-- ext-print -->
- <extension name="print" />
- <extension name="printcockpit" />
- <extension name="printhmc" />
- <!-- ext-template -->
- <extension name="ycommercewebservices" />
- <extension name="ycommercewebserviceshmc" />
- <!-- ext-accelerator -->
- <extension name="acceleratorservices" />
- <extension name="acceleratorfacades" />
- <extension name="acceleratorcms" />
- <extension name="acceleratorstorefrontcommons" />
- <extension name="yacceleratorinitialdata" />
- <extension name="yacceleratorcockpits" />
- <extension name="yacceleratorfulfilmentprocess" />
- <extension name="yacceleratorcore" />
- <extension name="yacceleratorfacades" />
- <extension name="yacceleratorstorefront" />
- <extension name="electronicsstore" />
- <extension name="apparelstore" />
- <extension name="yacceleratortest" />
- <extension dir="${HYBRIS_BIN_DIR}/ext-addon/b2ccheckoutaddon"/>
- <extension dir="${HYBRIS_BIN_DIR}/ext-addon/addonsupport"/>
- <extension dir="${HYBRIS_BIN_DIR}/ext-content/liveeditaddon"/>
- <extension dir="${HYBRIS_BIN_DIR}/ext-addon/acceleratorwebservicesaddon"/>
- </extensions>
- </hybrisconfig>
Perform a Build again
ant build all./hybrisserver.sh
Got to Hybris Admin console and perform complete initialization
Adding Add On's necessary for OOB B2C electronic store
# Include Add Onant addoninstall -Daddonnames="liveeditaddon" -DaddonStorefront.yacceleratorstorefront="yacceleratorstorefront"...[echo] Adding addon 'liveeditaddon' to extensioninfo.xml for 'yacceleratorstorefront'BUILD SUCCESSFUL
If you don't add this plugin it will result in following error while accessing the yaccelerator store, org.apache.jasper.JasperException: An exception occurred processing JSP page /WEB-INF/views/desktop/pages/layout/landingLayout2Page.jsp at line 6
Perform a Build again
ant all./hybrisserver.sh
Store Initialization
Got to Hybris Admin console and perform following steps.
Platform -> update
select only liveeditaddon and click on update.
Setting up custom Store
ant modulegen -Dinput.module=accelerator -Dinput.name=myb2cstore -Dinput.package=org.mystore......[echo] Next steps:[echo][echo] 1) Add your extension to your /Users/hvadiv/hybris5602/hybris/config/localextensions.xml[echo][echo] <extension dir="/Users/hvadiv/hybris5602/hybris/bin/custom/myb2cstore/myb2cstorefulfilmentprocess"/>[echo] <extension dir="/Users/hvadiv/hybris5602/hybris/bin/custom/myb2cstore/myb2cstorecore"/>[echo] <extension dir="/Users/hvadiv/hybris5602/hybris/bin/custom/myb2cstore/myb2cstoreinitialdata"/>[echo] <extension dir="/Users/hvadiv/hybris5602/hybris/bin/custom/myb2cstore/myb2cstorefacades"/>[echo] <extension dir="/Users/hvadiv/hybris5602/hybris/bin/custom/myb2cstore/myb2cstoretest"/>[echo] <extension dir="/Users/hvadiv/hybris5602/hybris/bin/custom/myb2cstore/myb2cstorestorefront"/>[echo] <extension dir="/Users/hvadiv/hybris5602/hybris/bin/custom/myb2cstore/myb2cstorecockpits"/>[echo][echo] 2) Remove the following extensions from your /Users/hvadiv/hybris5602/hybris/config/localextensions.xml[echo] yacceleratorfulfilmentprocess,yacceleratorcore,yacceleratorinitialdata,yacceleratorfacades,yacceleratortest,yacceleratorstorefront,yacceleratorcockpits[echo][echo] 3) Make sure the applicationserver is stopped before you build the extension the first time.[echo][echo] 4) Perform 'ant' in your hybris/platform directory.[echo][echo] 5) Restart the applicationserver[echo][echo]BUILD SUCCESSFUL
Modified localextensions.xml file in my local setup is as follows.
- <?xml version="1.0" encoding="UTF-8"?>
- <hybrisconfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="resources/schemas/extensions.xsd">
- <extensions>
- <!--
- All extensions located in ${HYBRIS_BIN_DIR}/platform/ext are automatically loaded.
- More information about how to configure available extensions can be found here : https://wiki.hybris.com/x/nZVzC
- -->
- <path dir="${HYBRIS_BIN_DIR}" />
- <!-- ext-platform -->
- <extension name="admincockpit" />
- <extension name="backoffice" />
- <extension name="cockpit" />
- <extension name="hmc" />
- <extension name="mcc" />
- <extension name="platformhmc" />
- <!-- ext-platform-optional -->
- <extension name="ldap" />
- <extension name="lucenesearch" />
- <extension name="virtualjdbc" />
- <!-- ext-cockpit -->
- <extension name="reportcockpit" />
- <!-- ext-commerce -->
- <extension name="btg" />
- <extension name="btgcockpit" />
- <extension name="commercesearch" />
- <extension name="commercesearchbackoffice" />
- <extension name="commercesearchhmc" />
- <extension name="commerceservices" />
- <extension name="basecommerce" />
- <extension name="payment" />
- <extension name="promotions" />
- <extension name="voucher" />
- <extension name="customerreview" />
- <extension name="ticketsystem" />
- <extension name="solrfacetsearch" />
- <extension name="solrfacetsearchhmc" />
- <extension name="oci" />
- <extension name="wishlist" />
- <extension name="commercefacades" />
- <extension name="commercewebservicescommons" />
- <!-- ext-content -->
- <extension name="productcockpit" />
- <extension name="cms2" />
- <extension name="cms2lib" />
- <extension name="cmscockpit" />
- <extension name="bmecat" />
- <extension name="bmecathmc" />
- <extension name="importcockpit" />
- <extension name="classificationsystems" />
- <extension name="classificationsystemshmc" />
- <!-- ext-channel -->
- <extension name="cscockpit" />
- <extension name="mobileoptionals" />
- <extension name="mobileservices" />
- <!-- ext-addon -->
- <extension name="addonsupport" />
- <extension name="b2ccheckoutaddon" />
- <!-- ext-print -->
- <extension name="print" />
- <extension name="printcockpit" />
- <extension name="printhmc" />
- <!-- ext-template -->
- <extension name="ycommercewebservices" />
- <extension name="ycommercewebserviceshmc" />
- <!-- ext-accelerator -->
- <extension name="acceleratorservices" />
- <extension name="acceleratorfacades" />
- <extension name="acceleratorcms" />
- <extension name="acceleratorstorefrontcommons" />
- <extension dir="${HYBRIS_BIN_DIR}/custom/myb2cstore/myb2cstorefulfilmentprocess"/>
- <extension dir="${HYBRIS_BIN_DIR}/custom/myb2cstore/myb2cstorecore"/>
- <extension dir="${HYBRIS_BIN_DIR}/custom/myb2cstore/myb2cstoreinitialdata"/>
- <extension dir="${HYBRIS_BIN_DIR}/custom/myb2cstore/myb2cstorefacades"/>
- <extension dir="${HYBRIS_BIN_DIR}/custom/myb2cstore/myb2cstoretest"/>
- <extension dir="${HYBRIS_BIN_DIR}/custom/myb2cstore/myb2cstorestorefront"/>
- <extension dir="${HYBRIS_BIN_DIR}/custom/myb2cstore/myb2cstorecockpits"/>
- <!--extension name="yacceleratorinitialdata" />
- <extension name="yacceleratorcockpits" />
- <extension name="yacceleratorfulfilmentprocess" />
- <extension name="yacceleratorcore" />
- <extension name="yacceleratorfacades" />
- <extension name="yacceleratorstorefront" />
- <extension name="yacceleratortest" /-->
- <extension name="electronicsstore" />
- <extension name="apparelstore" />
- <extension dir="${HYBRIS_BIN_DIR}/ext-addon/b2ccheckoutaddon"/>
- <extension dir="${HYBRIS_BIN_DIR}/ext-addon/addonsupport"/>
- <extension dir="${HYBRIS_BIN_DIR}/ext-content/liveeditaddon"/>
- <extension dir="${HYBRIS_BIN_DIR}/ext-addon/acceleratorwebservicesaddon"/>
- </extensions>
- </hybrisconfig>
Perform a Build again
ant./hybrisserver.sh
Store Initialization
Got to Hybris Admin console and perform following steps.
Platform -> update
and start initialization of the new store.
Adding Add On's necessary for OOB B2C electronic store
ant addoninstall -Daddonnames="liveeditaddon" -DaddonStorefront.myb2cstorestorefront="myb2cstorestorefront"ant all./hybriserver.sh
Got to Hybris Admin console and perform following steps.
Platform -> update
select only liveeditaddon and click on update.
Temporary Fix
An issue with JSP compilation at runtime while accessing the home page seems to be a defect in 5602 version
Following fix will help resolve this error, watch out for an official fix in the next version
Navigate to generated source code for .\hybris\bin\custom\myb2cstore\myb2cstorestorefront\web\webroot\WEB-INF\common\tld\cmstags.tld
and replace the content with following.
The change is reverting de.hybris.liveeditaddon.cms.tags.LiveeditaddonCMSContentSlotTag back to de.hybris.platform.acceleratorcms.tags2.CMSContentSlotTag.
- <?xml version="1.0" encoding="UTF-8"?>
- <taglib xmlns="http://java.sun.com/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
- version="2.1">
- <tlib-version>1.2</tlib-version>
- <short-name>cms</short-name>
- <uri>http://hybris.com/tld/cmstags</uri>
- <tag>
- <description>Iterates over the components in a CMS content slot for a position in the current page</description>
- <name>pageSlot</name>
- <tag-class>de.hybris.platform.acceleratorcms.tags2.CMSContentSlotTag</tag-class>
- <body-content>JSP</body-content>
- <attribute>
- <description>the position of the content slot in the CMS page</description>
- <name>position</name>
- <required>true</required>
- <rtexprvalue>true</rtexprvalue>
- </attribute>
- <attribute>
- <description>the var name to access the content element</description>
- <name>var</name>
- <required>true</required>
- <rtexprvalue>false</rtexprvalue>
- </attribute>
- <attribute>
- <description>the limit on the number of components to render in this slot</description>
- <name>limit</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- </attribute>
- <attribute>
- <description>the HTML element to generate for this slot</description>
- <name>element</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- </attribute>
- <!-- Any other attributes specified are written onto the element -->
- <dynamic-attributes>true</dynamic-attributes>
- </tag>
- <tag>
- <description>Iterates over the components in a CMS content slot given the UID of the slot</description>
- <name>globalSlot</name>
- <tag-class>de.hybris.platform.acceleratorcms.tags2.CMSContentSlotTag</tag-class>
- <body-content>JSP</body-content>
- <attribute>
- <description>the uid of content slot</description>
- <name>uid</name>
- <required>true</required>
- <rtexprvalue>true</rtexprvalue>
- </attribute>
- <attribute>
- <description>the var name to access the content element</description>
- <name>var</name>
- <required>true</required>
- <rtexprvalue>false</rtexprvalue>
- </attribute>
- <attribute>
- <description>the limit on the number of components to render in this slot</description>
- <name>limit</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- </attribute>
- <attribute>
- <description>the HTML element to generate for this slot</description>
- <name>element</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- </attribute>
- <!-- Any other attributes specified are written onto the element -->
- <dynamic-attributes>true</dynamic-attributes>
- </tag>
- <!-- The 'slot' tag is deprecated -->
- <!-- <tag>
- <description>Iterates over a CMS content slot</description>
- <name>slot</name>
- <tag-class>de.hybris.platform.acceleratorcms.tags2.CMSContentSlotTag</tag-class>
- <body-content>JSP</body-content>
- <attribute>
- <description>the content slot</description>
- <name>contentSlot</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- </attribute>
- <attribute>
- <description>the uid of content slot</description>
- <name>uid</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- </attribute>
- <attribute>
- <description>the position of content slot</description>
- <name>position</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- </attribute>
- <attribute>
- <description>the var name to access the content element</description>
- <name>var</name>
- <required>true</required>
- <rtexprvalue>false</rtexprvalue>
- </attribute>
- <attribute>
- <description>the limit on the number of components to render in this slot</description>
- <name>limit</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- </attribute>
- </tag> -->
- <tag>
- <description>Renders a component by calling it's controller</description>
- <name>component</name>
- <tag-class>de.hybris.platform.acceleratorcms.tags2.CMSComponentTag</tag-class>
- <body-content>JSP</body-content>
- <attribute>
- <description>the uid of the component</description>
- <name>uid</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- </attribute>
- <attribute>
- <description>the component</description>
- <name>component</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- </attribute>
- <attribute>
- <description>the parent component</description>
- <name>parentComponent</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- </attribute>
- <attribute>
- <description>Set to true in order to evaluate restrictions on this component, default value false. Note that restrictions are typically evaluated by the slot tag.</description>
- <name>evaluateRestriction</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- </attribute>
- <attribute>
- <description>the HTML element to generate for this component</description>
- <name>element</name>
- <required>false</required>
- <rtexprvalue>true</rtexprvalue>
- </attribute>
- <!-- Any other attributes specified are written onto the element -->
- <dynamic-attributes>true</dynamic-attributes>
- </tag>
- </taglib>
E-commerce Design Company Jaipur, E-commerce Website Design Jaipur. Jovi International is the best E-commerce Development Company Jaipur provides the best services for E-commerce Website Development Jaipur and all over India.
ReplyDeleteWow, Great information. Thanks for sharing.
ReplyDeletesap hybris online training in usa
Thanks for sharing
ReplyDeleteThe article is very interesting and truly informative. Thanks for sharing. Keep more sharing.Hotels in Kumbakonam,Kumbakonam Hotels
ReplyDeleteAs a blog reviewer I have to verify all contents both in Blog spots and WordPress Blogs for uniqueness and readers friendly .I found best content in this blog as well as your article is most useful to all regular visitors .I would suggest this blog for further promotion via google. Thank you for posting such a useful article.
ReplyDeleteRestaurants in JLT | Indian Restaurants in JLT | Restaurants in Jumeirah
Restaurants in Jumeirah Lake Towers | Indian Restaurants in Jumeirah
As a blog reviewer I have to verify all contents both in Blog spots and WordPress Blogs for uniqueness and readers friendly .I found best content in this blog as well as your article is most useful to all regular visitors .I would suggest this blog for further promotion via google. Thank you for posting such a useful article.
ReplyDeleteRestaurants in JLT | Indian Restaurants in JLT | Restaurants in Jumeirah
Restaurants in Jumeirah Lake Towers | Indian Restaurants in Jumeirah
This comment has been removed by the author.
ReplyDeleteAdmiring the time and effort you put into your blog and detailed information you offer!..
ReplyDeletedigital marketing agency in india
A couple of extra bolts free online movies peppered the no-man’s-land between the mantlets and the wagons, however none received nearer than a few ft.
ReplyDeleteThank you so much for posting it.
ReplyDeleteCertification of Core Java in Jaipur
The object-oriented, class-based build of Java has made it one of most popular programming languages and the demand of professionals with certification in Advance Java training is at an all-time high not just in India but foreign countries too. Honda Life Car Parts In Pakistan
ReplyDeleteHonda Vezel Car Parts In Pakistan
Honda Brv Car Parts In Pakistan
Suzuki Cultus Car Parts In Pakistan
Suzuki Swift Car Parts In Pakistan
Suzuki Alto Car Parts In Pakistan
Wagon-R Car Parts In Pakistan
Excellent information with unique content and it is very useful to know about the information based on blogs. http://www.unikaas.com
ReplyDeletehttp://bikeparts.pk
https://tnhprinter.com
https://tnhpackaging.com
https://mastorat.com/replica-clothing-supplier
http://thenethawks.com/
https://rightjobs.pk/jobs/pakistan/lahore
http://crosscars.co.uk
Thanks for sharing nice information. Jacky’s Group best electronic store in Dubai.
ReplyDeleteThanks for sharing nice information. JACKY’S RETAIL LLC is best online electronic store.
ReplyDeleteUnique blog with nice coding section..
ReplyDeletePython Training in Jaipur
Hadoop Training in Jaipur
Software Testing training in Jaipur
MVC Training in Jaipur
Adobe Photoshop Training in Jaipur
NETWORKING Training In Jaipur
Wow extraordinary and wonderful post...
ReplyDeletedevops course in Marathahalli
best devops training in Marathahalli
Devops certification training in Marathahalli
devops training in Marathahalli
devops training institute in marathahalli
thanks for sharig this information its very impressive
ReplyDeleteiot courses in Bangalore
internet of things training course in Bangalore
internet of things course in Bangalore
Information from this blog is very useful for me, am very happy to read this blog Kindly visit us @ Luxury Watch Box | Shoe Box Manufacturer | Candle Packaging Boxes | Wallet Box
ReplyDeleteThank you so much for sharing. Keep updating your blog. Website Development Company in Bangalore | Web Developers in Bangalore | Top Web Design Company in Bangalore
ReplyDeleteThanks for sharing nice information.
ReplyDeleteShop electronics online UAE
Usually I never comment on blogs but your article is so convincing that I never stop myself to say something about it. You’re doing a great job Man, Keep it up.mobile phone repair in Novi
ReplyDeleteiphone repair in Novi
cell phone repair in Novi
phone repair in Novi
tablet repair in Novi
ipad repair in Novi
mobile phone repair Novi
iphone repair Novi
cell phone repair Novi
phone repair Novi
123movies Nice Style. :)
ReplyDeleteVery informative, I really enjoyed reading it.
ReplyDeleteTop 10 Cheapest Technologies To Generate Power at Home
Thanks for writing such an important topic.
ReplyDeleteYou can also visit: www.exertpro.com
to get more IT and Web Design updates
https://exertpro.com
Thanks For Posting This usefull Information Techdhyan
ReplyDeleteThank You For This Article
Call services Looking for the best after hour call services, Visit this site. They provide easy access to the messages and calls to their clients.
ReplyDeleteThank You, Dịch vụ IT chuyên nghiệp tại Tp. Hồ Chà Minh, Việt Nam
ReplyDeleteRead full detail of Windows 11, All The Features You Need To Know About
ReplyDeleteAt Gori Studies you will be going to learn about the every course and Subject and able to score good and upgrade your skill.
ReplyDeleteWe have our Computer Course Center in Rohtak, Haryana and offer many computer Courses at reasonable price with certificate and also offer Job to job seekers. Since 2012 we are providing the education in Rohtak. call - 9253010028
This comment has been removed by the author.
ReplyDelete
ReplyDeleteThank you so much for sharing this post, I appreciate your work. It was a great informative post. Go so many useful and informative links. Loved your writings also.
How can I automate my business with Exly
Thank you so much for sharing this post, I appreciate your work. It was a great informative post. Go so many useful and informative links. Loved your writings also.
ReplyDeleteBest Website Builder
Thank you so much for sharing this post, I have read some of your stuff this past weekend . Personally, I loved your post. I appreciate your work. It was a great informative post. Your articles are useful and informative and links also. I feed glad to read your blog. keep It up.
ReplyDeleteIf you want to know more information about Top 5 Online Business Ideas You Can Start Today Once you can check it.
Thank you so much for sharing this post, I have read some of your stuff this past weekend . Personally, I loved your post. I appreciate your work. It was a great informative post. Your articles are useful and informative and links also. I feed glad to read your blog. keep It up.
ReplyDeleteIf you want to know more information about Best Website builders Once you can check it.
Thank you so much for sharing this post, I have read some of your stuff this past weekend . I appreciate your work. It is a great informative post. Your articles are useful and informative and links also. I feed glad to read your blog. keep It up.
ReplyDeleteIf you want to know more information about How to generate leads for business Once you can check it.
Thank you so much for sharing this post, I have read some of your stuff this past weekend . Personally, I loved your post. I appreciate your work. It was a great informative post. Your articles are useful and informative and links also. I feed glad to read your blog. keep It up.
ReplyDeleteIf you want to know more information about How to Sell your Fitness Courses Online Once you can check it.
Thank you so much for sharing this post, I have read some of your stuff this past weekend .. It was a great informative post. Your articles are useful and informative and links also. I feed glad to read your blog. keep It up
ReplyDeleteIf you want to know more information about
Best Feature-Loaded Alternative to Instamojo in 2021
Thank you so much for sharing this post, I have read some of your stuff this past weekend . Personally, I loved your post. I appreciate your work. It was a great informative post. Your articles are useful and informative and links also. I feed glad to read your blog. keep It up.
ReplyDeleteIf you want to know more information about
Top benefits of having an online business Once you can check it.
Thank you so much for sharing this post, I have read some of your stuff this past weekend . Personally, I loved your post. I appreciate your work. It was a great informative post. Your articles are useful and informative and links also. I feed glad to read your blog. keep It up.
ReplyDeleteIf you want to know more information about
online consultancy business Once you can check it.
superb article thanks for sharing
ReplyDeletehttps://findjobsolutions.in/companies/techiealaddin/
Thank you for every other informative web site. Where else may I am getting that kind of information written in such a perfect way? I’ve a undertaking that I’m just now working on, and I have been on the look out for such information.
ReplyDeleteb a part 3 ka result
Start with starting, and know the one gunpoint of managing and analyses of your website data, and host your site with Turkey VPS Server
ReplyDelete